The ability of business users to manage crucial business information has been greatly enhanced by the proliferation of IP-based networking together with advances in object oriented Web-based programming and browser technology. Using these advancements, systems have been developed that permit web-based access to business information systems, thereby allowing any user with a browser and an Internet or intranet connection to view, enter, or modify the required business information.
As such systems grow increasingly sophisticated, problems can arise in rolling out newer, more advanced system versions in a manner that meets the many different demands placed on the system provider. For example, it is desirable to allow advanced users to access the features and advantages of the new version of the system as soon as they are ready. At the same time, it is desirable to avoid thrusting the new version upon users of the current version who may not be ready for the new features. It is desirable to minimize the number of client-side system changes (e.g., bookmarks, macros, scripts) required by the upgrading customers to properly gain access to new version. Likewise, it is desirable to minimize any client-side system changes needed for non-upgrading customers to properly maintain access to the current version. Finally, in a web-based access environment, it is mandatory to properly manage the loading of web servers, application servers, and databases over a variety of traffic conditions to maintain full system availability for substantially all users at substantially all times.
As used herein, the term web-based business application or web-based business information system generally refers to a business software system having browser-based access such that an end user, or client, requires only a browser and an Internet/intranet connection on their desktop, laptop, network appliance, PDA, etc., to obtain substantially complete access to that system. Many web-based business information systems, including those described infra with respect to the preferred embodiments, also accommodate so-called server-to-server communications in which automated systems, rather than humans, are the requesting clients. Commonly, the web-based business information systems sends information to the automated client, and/or receives information from the automated client, using HTTP or HTTPS over TCP/IP, with the data itself being presented according to a markup language such as XML or variants thereof such as qbXML or smbXML.
Examples of web-based business applications include those described in The following commonly assigned patent applications, each of which is incorporated by reference herein: U.S. Ser. No. 10/406,915, U.S. Ser. No. 10/665,308, and U.S. Ser. No. 10/796,718 (hereinafter the “incorporated disclosures”). Further examples of web-based business applications include application service provider (ASP) hosted services provided by NetSuite, Inc. of San Mateo, Calif. such as NetSuite™, NetCRM™, NetERP™, NetSuite Small Business™, and NetCommerce™, descriptions of which can be found at “www.netsuite.com.” A further example of a web-based business application is discussed at “www.salesforce.com.”
Web-based business applications can also be implemented using non-ASP models having different hosting mechanisms, such as with self-hosted systems in which a business enterprise operates and maintains its own private, captive business information system having browser-based access across an intranet and/or the Internet. As described in the incorporated disclosures, a commercial enterprise can achieve many functional and strategic advantages by using a web-based business information system comprising integrated ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), and other business capabilities.
FIG. 1 illustrates a web-based business information system environment for which one or more of the preferred embodiments described infra are particularly advantageous. It is to be appreciated that FIG. 1 is presented by way of example and not by way of limitation, in order to clearly set forth the features and advantages of the preferred embodiments described infra. Web-based business information system 102 is coupled via the Internet 104 to a plurality of customer companies 106 (Alpha Enterprises), 108 (Bob's Bikes), and 110 (Carl's Camera). Each customer company 106, 108, and 110 has a distinct account with the provider of the web-based business information system 102, as identified by a unique account identifier. The web-based business information system 102 is responsible for maintaining business data associated with each account in accordance with the services to which that account is subscribed. As used herein, the term account refers to the subscribing business entity (e.g., Alpha Enterprises, Bob's Bikes, Carl's Camera) and/or to the datasets within the web-based business information system corresponding to that subscribing business entity.
Also shown in FIG. 1 are a plurality of end users 124, 128, and 136, each end user being associated with at least one account within the web-based business information system 102. Each end user has a unique identity with respect to the web-based business information system 102 and is identified by a unique end user identifier, such as an e-mail address or social security number. As described in Ser. No. 10/406,915, supra, each end user has at least one role (e.g., Salesperson, Executive, Administrator) with respect to at least one account in the web-based business information system 102. Notably, the same end user can potentially have multiple roles across multiple customer accounts of the web-based business information system 102. However, end users can only have a single role at any particular time during any particular session with the web-based business information system 102. When accessing the web-based business information system 102 in the context of a particular role, the end users 124, 128, and 136 represent a first type of requesting client to the web-based business information system.
Also shown in FIG. 1 is an unaffiliated user 112 who generally has no particular relationship with the provider of the web-based business information system 102, but whose sessions with the web-based business information system 102 are often highly desirable. The unaffiliated user 112 can be a web shopper who is visiting a web store hosted by the web-based business information system 102 on behalf of Alpha Enterprises, for example. The web shopper may have been directed to Alpha Enterprises' hosted web store by entering a URL, by clicking a link in a targeted e-mail advertisement, by clicking a link in a search result, or by any of a variety of other methods. As another example, unaffiliated user 112 can be a potential business contact who entered a URL printed on a business card of one of the end users 124, 128, or 136. In such case, the potential business contact is directed to a page within the web-based business information system 102 where he or she can enter their contact information. Unaffiliated users represent a second type of requesting client with respect to the web-based business information system 102. Notably, end users 124, 128, or 136 may themselves be unaffiliated users with respect to some sessions with the web-based business information system 102, e.g., when they are using their browser to shop online during non-work hours or the like. For simplicity and clarity of description, in the case of end users, unaffiliated users, or other humans using a browser to access the web-based business information system 102, the term requesting client can refer to that user and/or to their browser software.
In the example of FIG. 1, Alpha Enterprises subscribes to a full slate of features offered by the web-based business information system 102, including web store hosting, payment processing, inventory control, accounting, and CRM (customer relationship management), with corresponding data being respectively stored at locations 114-122 therein. Bob's Bikes hosts its own web store 126, but subscribes to the web-based business information system 102 for payment processing, inventory control, and accounting, with corresponding data being respectively stored at locations 130-134 therein. Finally, Carl's Camera has a web store that is hosted by a third party shopping portal 138, but uses a third party payment processor 140 to process the credit card transactions associated with that web store. However, Carl's Camera subscribes to the web-based business information system 102 for the purposes of inventory control, accounting, and CRM, with corresponding data being respectively stored at locations 142-146 therein.
External business systems such as the web store 126, shopping portal 138, and the payment processing provider 140 of FIG. 1 are usually outside the control of the provider of the web-based business information system 102. However, these external business systems usually require automated communications with the web-based business information system 102 for proper updating of the data for which the web-based business information system is responsible. For example, automated communications are usually required between the payment processing provider 140 and the web-based business information system 102 to properly update the accounting data 144 for Carl's Camera after a customer payment transaction has been processed. Inventory adjustment communications between the shopping portal 138 and the web-based business information system 102 would likewise be required to properly update Carl's Camera inventory data 142 after that sale. In direct and/or standards-based cooperation with external parties in control of the external business systems, web-based business information system 102 provides a server-to-server capability for allowing such communications with the external business systems. When communicating the web-based business information system 102 in the context of such server-to-server communications, the external business systems represent a third kind of requesting client to the web-based business information system.
It is to be appreciated that FIG. 1 does not necessarily set forth all of the features of the web-based information system 102 with respect to any one client. Rather, FIG. 1 sets forth certain examples of a web-based information system for purposes of description of one or more the preferred embodiments described infra.
For purposes of clarity of description herein, a client request refers to an internet request according to a stateless internet communication protocol, such as an HTTP request. The client request includes a Uniform or Universal Resource Locator (URL) and parameters, where the term parameters is used to refer to the set of all other information accompanying the URL in the client request and/or to any particular item in the parameters. Thus, for a typical client request such as an HTTP request sent from a browser such as Microsoft Internet Explorer, the term parameters refers to the method identifier (GET, POST, etc.) and, where present, a variety of other accompanying information such as the HTTP version identifier, header(s), cookie(s), language identifiers, time stamps, the body (e.g., for POST methods), and other information as would be readily understood by one skilled in the art. Some of the parameters are often visible on the address line of most browsers (e.g., as a text string separated from the URL by a “?” character), while other parameter are not usually visible on the address line.
As used herein, the term external entry point refers to a URL that, if submitted by a requesting client to a web-based business information system in the absence of a previously established session between the requesting client and the web-based business information system, instantiates some form of login into the web-based business information system for the requesting client. For example, when an end user logs into a web-based business information system provider (e.g., “NetSuite”) using a standard system login page that requests their user id and password, an HTTP request may be submitted having an external entry point URL and accompanying parameters “http://www.netsuite.com/app/login/nlogin.ns?bob@bobsbikes.com&password-- xxx.” As another example, an unaffiliated user such as a web shopper may click on an external link into the web-based business information system having an external entry point URL “http://www.netsuite.com/app/login/alphastore.” As yet another example, an external business system may instantiate a server-to-server data exchange by sending an HTTP request having an external entry point URL and accompanying parameters “http://www.netsuite.com/s/smbXML?paccount=ACCT547&data,” where data is a character string for the business data being communicated according to the smbXML language.
In view of the many sophisticated features that can be offered by a web-based business information system, including accommodation of multiple user roles across multiple accounts, accommodation of different business capability combinations for different accounts, different kinds of external access into the web-based business information system using different external access points, and many other features and abilities, problems can arise in upgrading the web-based business information system to a new system version in a manner that satisfies the needs of everyone involved without, at the same time, “breaking” or overloading the system. This can be especially problematic if the upgrade process necessitates the use of a modified database schema for the new version that is not downward compatible with an existing database schema for the current version. Unfortunately, new feature sets and capabilities often implicate modification of the database schema in order to accommodate additional data.
Accordingly, it would be desirable to provide a web-based business information system that can be upgraded in a manner that allows certain accounts to upgrade to a new version as soon as they are ready, while at the same time allowing other accounts to maintain access to the current version.
It would be further desirable to provide such a web-based business information system that concurrently services client requests associated with upgraded accounts and client requests associated with non-upgraded accounts.
It would be still further desirable to provide such a web-based business information system even where the new version comprises a modified database schema that is not downward compatible with an existing database schema for the current version.
It would be even further desirable to provide such a web-based business information system that minimizes any client-side system changes needed for accommodating the upgrade process.
It would be still further desirable to provide such a web-based business information system that is highly scalable and can continue to be upgraded to newer versions in the above ways even as the number of accounts grows very large.
It would be even further desirable to provide such a web-based business information system that accommodates the ability for multiple end users to have multiple roles over one or more accounts and that accommodates multiple external access points.
It would be even further desirable to provide such a web-based business information system that requires no external entry point URL changes by requesting clients to maintain access to the web-based business information system for any particular account therein at any point during the version upgrade process.
It would be even further desirable to provide such a web-based business information system where the upgrade process has modest hardware requirements and network loading implications, such that a provider of a web-based business information system can efficiently operate in an upgrading mode for a percentage of time ranging from many months out of the year to a perpetual upgrading mode.